perm filename JUST.F4[NEW,LCS] blob
sn#717315 filedate 1983-06-23 generic text, type T, neo UTF8
C TO JUSTIFY SEVERAL MSS FILES AT ONCE. (UP TO 15.)(8*15=120)
C LOAD WITH -- VERT.F4, JUSTFY.F4 AND BIGGET.FAI --- ************
COMMON/XRN/ RN(20000)/PTR/KWDS(2500) /LIMIT/LIMIT,ITEM
1 /STF/RSTFAC(120),STFF(120)
1 /RXP/RINP(8),K,SST(8),J,INX,RRT,A,Z,JJ,MX,H(8) /IX/IX
1 /RINP/VP(250),VR(250),MV(1500)
1 /RR4/P1,P2,NF /ISZ/ISZ,SZ,JCNT
CC 1 /RJV/V(200) /RR4/R4,R5,P1,P2,IH,NF
C NF=NUM OF STAVES. (BY 8S) (ALSO NUMB. OF FILES - 8 STAVES/FILE)
COMMON R2,JK,L,J2,RDIS,R4,R5,R6,R7,R8,R9
COMMON /NNP/NP(1500) /KJY/KY,LY
CCC COMMON JK,L,R8,R9,RDIS /MMV/MV(1500) /KJY/KY,LY
C INCREASE NP AND MV IF NEEDED -- PUT TRAP IN BIGGET!
C NFILE HOLDS POINTERS TO START OF EACH FILE IN KWDS ARRAY
COMMON /NFI/NFILE(120),JR(120)
DIMENSION JV(3)
DATA EXT/'MS'/,OUTX/'MS'/
101 FORMAT(' L=LINE UP, V=VERTICAL JUST., H=HORIZONTAL JUST.'/
1 ' CHOOSE A LETTER, OR DO ALL AT ONCE.')
102 TYPE 101
ACCEPT 201,JV
JVX=0
JVY=0
JVZ=0
J=0
DO 50 K=1,3
L=JV(K)
CALL LO2UP(L)
IF(L.NE.'V')GO TO 52
JVX=-1
GO TO 54
52 IF(L.NE.'L')GO TO 53
JVY=-1
GO TO 54
53 IF(L.NE.'H')GO TO 50
JVZ=-1
54 J=-1
50 CONTINUE
IF(J.EQ.0)GO TO 102
C GO BACK IF NO CORRECT LETTERS WERE TYPED.
IF(JVX.LT.0)CALL VERTX
C GO GET VERTICAL FACTOR OR INCHES HEIGHT
ISZ=0
SZ=1
C FOR RERUNS IN JJUST
TYPE 1
1 FORMAT(
1' TYPE FIRST INPUT NAME.EXT AND NUMBER OF FILES -- '$)
CC ACCEPT 200,N1
CALL NAMEIN(N1,EXT)
IF(N1.EQ.NMX.AND.OUTX.EQ.EXT)GO TO 202
C DON'T ALLOW SAME NAME.EXT ON INPUT AND OUTPUT
201 FORMAT(3A1)
200 FORMAT(A5)
IF(K.EQ.0)GO TO 203
N2=N1+(K-1)*2
C TYPE NAME.EXT N -- N=NUMBER OF FILES TO READ
GO TO 202
203 TYPE 300
300 FORMAT(' TYPE LAST INPUT NAME -- '$)
ACCEPT 200,N2
CALL LO2UP(N2)
202 TYPE 3011
3011 FORMAT(' TYPE FIRST OUTPUT NAME.EXT -- '$)
CC ACCEPT 200,NMX
CALL NAMEIN(NMX,OUTX)
IF(NMX.EQ.N1.AND.OUTX.EQ.EXT)GOTO202
C DON'T ALLOW USE OF SAME NAME.EXT ON OUTPUT.
CC IF(N2.EQ.'CONVT')GO TO 111
IF(JVZ.EQ.0)GO TO 991
TYPE 100
100 FORMAT(' POS.1, POS.2 - '$)
ACCEPT 111,P1,P2
IF(P2.EQ.0)P2=200
111 FORMAT(2F)
991 IF(NMX.EQ.' ')NMX='AAAAA'
NNMX=NMX
990 NMX=NNMX
NFCNT=0
JCNT=0
NFILE(1)=1
JR(1)=1
NF=1
L=0
ITEM=1
C JX=1
IX=1
NX=1
NM=N1
C*** 40 CALL GETEXT(NM,EXT)
C*** CALL EXTIN(RINP,32)
C*** CALL EXTIN(KWDS(JX),J)
C*** CALL EXTIN(RN(IX),INX)
C NEXT REPLACES ABOVE. NEW SAVE FORMAT.
CC40 CALL INMUS(NM,EXT,RN(IX),KWDS(JX),RINP)
40 CALL INMUS(NM,EXT,RN(IX),KWDS(ITEM),RINP)
J=J-2
JJ=0
DO 1111 K=NX,NX+7
JJ=JJ+1
RSTFAC(K)=RINP(JJ)
1111 STFF(K)=SST(JJ)
IF(JVX.LT.0)CALL EXPND(ITEM,J,IX,INX)
CC IF(JVH.EQ.'V')CALL EXPND(JX,J,IX,ITEM)
C NOW EXPAND STAFF PARAMS WHERE IT MIGHT BE NEEDED.
CC IF(N2.EQ.'CONVT')GO TO 2
C ********* TYPE 999 AS POS1. FOR 'CONVERT', NAME2 WILL BE OUTPUT NM.
2000 RX=NX-1
IF(RX.EQ.0)GO TO 410
C INX = TOTAL NUM OF WDS IN THE NEW FILE
C IX = TOTAL NUM OF WDS
C J = NUM OF NEW ITEMS
C ITEM = POINTS TO 1ST NEW ITEM.
C L = IX-1
C RX = STAFF NUMBER TO BE ADDED.
C RN(KWDS(JX)+L) = 1ST WD IN NEW FILE
C RN(KWDS(JX+J-2)+L) = START OF LAST ITEM IN NEW FILE.
CC DO 41 K=JX,JX+J
DO 41 K=ITEM,ITEM+J
KWDS(K)=KWDS(K)+L
KX=KWDS(K)+2
C +2 IS FOR STAFF #
41 RN(KX)=RN(KX)+RX
410 IX=INX+IX-1
L=IX-1
ITEM=J+ITEM
CC JX=J+JX
NFILE(NF+1)=ITEM
CC NFILE(NF+1)=JX
C POINTER TO START OF KWDS FOR EACH FILE
JR(NF+1)=IX
NX=NX+8
IF(IX.LT.19500)GO TO 400
RRT=IX
TYPE 111,RRT
400 IF(NM.EQ.N2)GO TO 5
NM=NM+2
NF=NF+1
GO TO 40
2 JJ=1
3001 L=KWDS(JJ)
K=L+1
A=RN(K)
Z=RN(L)
IF(A.LT.5)GO TO 3002
IF(A.LE.10)GO TO 1177
IF(A.NE.20)GO TO 3002
1177 IF(A.NE.6)GO TO 3003
RN(K)=9
GO TO 3002
3003 IF(A.NE.5)GO TO 3004
RN(K)=10
IF(Z.LT.4)GO TO 3010
CALL EXCH(RN(L+5),RN(L+6))
GO TO 3002
3004 IF(A.NE.7)GO TO 3005
RN(K)=17
GO TO 3010
3005 IF(A.EQ.8)RN(K)=5
IF(A.EQ.9)RN(K)=6
IF(A.NE.10)GO TO 3006
RN(K)=8
IF(Z.LT.4)GO TO 3010
CALL EXCH(RN(L+4),RN(L+5))
CALL EXCH(RN(L+6),RN(L+5))
GO TO 3002
3006 IF(A.EQ.20)RN(K)=7
IF(A.NE.18)GO TO 3002
3010 FORMAT(' ITEM ',I3,', CODE ',F3.0)
TYPE 3010,JJ,A
3002 A=RN(L+2)
RN(L+2)=RN(L+3)
RN(L+3)=A
A=L+Z+3
JJ=JJ+1
IF(A.EQ.KWDS(JJ))GO TO 3001
MX=1
CC IF(N2.NE.' ')NM=N2
GO TO 6
CC5 INX=JX-1
C TOTAL IN RN ('I' IN MXX.F4)
5 IF(JVX.EQ.0)GO TO 105
C VERTICAL OR HORIZONTAL JUSTIFICATION?
TYPE 993
CALL VERT
105 IF(JVY.EQ.0)GO TO 205
TYPE 995
ITEM=ITEM-1
CALL MSSET(NF)
ITEM=ITEM+1
205 IF(JVZ.EQ.0)GO TO 6
C ALL DONE IF VERTICAL JUST ONLY
TYPE 994
R2=999.0
C SO ALL STAVES ARE CONSIDERED.
CALL JJUST
IF(JCNT.EQ.10)TYPE 992
993 FORMAT(' **** VERTICAL JUST ****')
994 FORMAT(' *** HORIZONTAL JUST ***')
995 FORMAT(' ****** LINING UP ******')
992 FORMAT(' **** TOO DENSE, CAN''T JUSTIFY ****')
C START OF WRITER
6 NM=NMX
JX=1
IX=1
NX=1
L=0
ISCR=1
Z=0
MX=NF
NF=1
7 CALL PUTEXT(NM,OUTX)
JJ=0
DO 7000 K=NX,NX+7
JJ=JJ+1
RINP(JJ)=RSTFAC(K)
7000 SST(JJ)=STFF(K)
CC IF(N2.EQ.'CONVT')GO TO 3
J=NFILE(NF+1)-NFILE(NF)
INX=JR(NF+1)-JR(NF)+1
P1=KWDS(JX+J)
RX=NX-1
IF(RX.EQ.0)GO TO 3
DO 61 K=JX,JX+J-1
KX=KWDS(K)
KWDS(K)=KX-L
KX=KX+2
61 RN(KX)=RN(KX)-RX
KWDS(JX+J)=KWDS(JX+J)-L
3 L=INX+IX-2
J=J+2
CALL EXTOUT(RINP,32)
C*** CALL EXTOUT(KWDS(JX),J)
C NOT NEEDED WITH NEW SAVE FORMAT
CALL EXTOUT(RN(IX),INX)
J=J-2
KWDS(JX+J)=P1
TYPE 60,NM,OUTX
IF(NF.EQ.MX)CALL EXIT
NF=NF+1
JX=NFILE(NF)
IX=JR(NF)
NX=NX+8
CC END FILE 21
NM=NM+2
GO TO 7
60 FORMAT(1XA5,'.',A3)
END
SUBROUTINE JJUST
DATA RI/4.5/,RPX/.2/
CC DATA RSP/.5/,RI/4.5/,RPX/.2/
COMMON/XRN/ RN(1)/PTR/KWDS(1)
1 /STF/RSTFAC(120),STFF(120) /LIMIT/LIMIT,ITEM
1 /RXP/RINP(8),K,SST(8),J,INX,RRT,A,Z,JJ,MX,H(8)
1 /RINP/R(2,250),MV(1)
1 /RR4/P1,P2,M /JSTFY/ROV,PRCNT,RJSZ
1 /ISZ/ISZ,SZ,JCNT
CC 1 /RJV/R(2,100) /RR4/R4,R5,P1,P2,IH,M
C M=NUM OF STAVES. (BY 8S)
COMMON R2,JK,L,J2,RDIS,R4,R5,R6,R7,R8,R9
COMMON /NNP/NP(1) /KJY/KY,LY
CC COMMON JK,L,R8,R9,RDIS /MMV/MV(1000) /KJY/KY,LY
C INCREASE NP AND MV IF NEEDED
DIMENSION IR(2,250)
CC DIMENSION IR(2,100)
EQUIVALENCE (R,IR)
IX=KWDS(ITEM)-1
CC IX=KWDS(ITEM+1)-1
PRCNT=1.
RRT=P2
R5=P2
RZRO=P1
R4=P1
IF(RRT.EQ.0)RRT=200
IF(RZRO.EQ.0)RZRO=.001
RJSZ=RI
CALL GETPTS(1)
CC CALL BIGGET
C BIG GETPTS FAIL ROUTINE
ML=1
ROV=RRT
19 IF(JCNT.LT.10)GO TO 990
ISZ=ISZ+5
TYPE 991,ISZ
991 FORMAT(' STAFF SIZE REDUCED BY ',I2,'%')
IF(ISZ.GT.50) PAUSE ' TOO MUCH TO HANDLE'
SZ=SZ-.05
RETURN
990 RP=PRCNT
RJSZ=RJSZ-RPX
JCNT=JCNT+1
C TEMPORARY COUNTER
TYPE 111,JCNT
111 FORMAT(I4)
CCCC CALL JUSTFY(M*8-1,ITEM,KWDS,MV,RN,RSTFAC,999.0,R4,R5)
CALL JUSTFY(M*8-1,R,IR,MV,NP,RN,RSTFAC,-1.0,R4,R5,R6,R8,R9)
C THE -1 IN 'JUSTFY' SKIPS SOME STUFF NEAR END.
110 IF(ROV.LE.RRT+.01)RETURN
IF(RJSZ.GT.4)RJSZ=4
PRCNT=(ROV-RZRO)/(RRT-RZRO)
IF(PRCNT.NE.RP)GO TO 19
101 R4=RZRO
R5=ROV
R8=RZRO
R9=RRT-.001
C JUSTIFYING SPACE DIMINISHES EACH TIME AROUND.
CALL MOVIT(RN,MV,R4,R5,R8,R9)
END
C THESE MOVE ENDS OF PARTIAL INNER BEAMS.
SUBROUTINE MVBEAM(I)
C L AND JK ARE FOR MOVES TO DIFF. STAFF.
COMMON R2,JK,L,J2,RDIS,R4,R5,R6,R7,R8,R9 /XRN/RN(1)
CC COMMON JK,L,R8,R9,RDIS /XRN/RN(1)
Y=RN(JK+I)
Z=ABS(Y)
IF(Z.LT.100.)GO TO 1
C NEXT FOR MINIS, DIAMONDS, 'X' NOTES. (LIMIT OF +-99 ON ALTITUDE.)
Y=AMOD(Y,100.)
X=Y+R8
Z=Z-ABS(Y)+ABS(X)
C PUTS ALL INTO POSITIVE
IF(X)Z=-Z
GO TO 2
1 Z=Y+R8
2 RN(L+I)=Z
END
SUBROUTINE NAMEIN(NAME,EXT)
COMMON /ALF/I(10) /RXP/RINP(8),K
ACCEPT 1,I
DO 2 K=2,6
IF(I(K).EQ.' ')GO TO 3
2 IF(I(K).EQ.'.')GO TO 4
3 REREAD 99,NAME
GO TO 11
4 IF(K.NE.6)TYPE 100
GO TO(1,5,6,7,8,9),K
1 FORMAT(10A1)
100 FORMAT(' **** NAME MUST HAVE 5 CHARACTERS ****')
55 FORMAT(2A1,A3)
66 FORMAT(A2,A1,A3)
77 FORMAT(A3,A1,A3)
88 FORMAT(A4,A1,A3)
99 FORMAT(A5,A1,A3,I)
5 REREAD 55,NAME,K,EXT
GO TO 10
6 REREAD 66,NAME,K,EXT
GO TO 10
7 REREAD 77,NAME,K,EXT
GO TO 10
8 REREAD 88,NAME,K,EXT
GO TO 10
9 REREAD 99,NAME,K,EXT,K
C K=HOW MANY FILES TO READ (ALPHABETICALLY)
10 CALL LO2UP(EXT)
11 CALL LO2UP(NAME)
END
SUBROUTINE LO2UP(J)
C CONVERTS ALL LOWER CASE TO UPPER CASE.
J=J.AND..NOT.((J/2).AND."201004020100)
END